#pragma once
#include "stdio.h"
#include "stdlib.h"
#include "assert.h"
#include "stdint.h"
#include "stdbool.h"

typedef int BTDataType;

typedef struct BinaryTreeNode
{
	BTDataType data;
	struct BinaryTreeNode* left;
	struct BinaryTreeNode* right;
}BTNode;

BTNode* CreatBinaryTree(void);
BTNode* BuyNode(BTDataType x);
void PreOrder(BTNode* root);
void InOrder(BTNode* root);
void PostOrder(BTNode* root);
void LevelOrder(BTNode* root);
int BinaryTreeSize(BTNode* root);
int BinaryTreeDepth(BTNode* root);
int BinaryTreeLeafSize(BTNode* root);
int BinaryTreeLevelKSize(BTNode* root, int k);
BTNode* BinaryTreeFind(BTNode* root, BTDataType x);
bool BinaryTreeComplete(BTNode* root);
void BinaryTreeDestory(BTNode* root);